package com.cskaoyan.mall.pay.service.impl;

import com.cskaoyan.mall.pay.api.OrderApi;
import com.cskaoyan.mall.pay.constant.PayRetCode;
import com.cskaoyan.mall.pay.dto.PaymentRequest;
import com.cskaoyan.mall.pay.dto.alipay.AlipayQueryRetResponse;
import com.cskaoyan.mall.pay.dto.alipay.AlipaymentResponse;
import com.cskaoyan.mall.pay.service.PayCoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @auther cskaoyan
 * @date 2022/6/22:11:33
 */
@Service
public class PayCoreServiceImpl implements PayCoreService {

    @Autowired
    PayHelper payHelper;

    @Autowired
    OrderApi orderApi;


    @Override
    public AlipaymentResponse aliPay(PaymentRequest request) {
        AlipaymentResponse alipaymentResponse = new AlipaymentResponse();

        // 1. 获取支付二维码图片的名字
        String codeFileName = payHelper.test_trade_precreate(request);

        if (codeFileName == null) {
           // 获取支付二维码失败
           alipaymentResponse. setCode(PayRetCode.GET_CODE_FALIED.getCode());
           alipaymentResponse.setMsg(PayRetCode.GET_CODE_FALIED.getMsg());
           return  alipaymentResponse;
        }

        // tb_payment 插入一条记录，订单的支付信息  TRADE_PROCESSING

        // 设置二维码图片的名字，成功的响应码以及描述信息
        return null;
    }

    @Override
    public AlipayQueryRetResponse queryAlipayRet(PaymentRequest request) {
        // 根据订单id查询支付结果
        String orderId = request.getTradeNo();
        boolean success = payHelper.test_trade_query(orderId);
        if (success) {
            // 更新 tb_payment  支付状态 TRADE_SUCCESS  支付成功时间 支付完成时间

            // 调用订单服务，执行以下操作
            //orderApi.payOrderSuccess()
            // 更新订单状态   已支付
            // 根据订单id，查询订单商品条目，根据订单商品条目购买的数量，扣减对应的锁定库存
        } else {
            // 更新 tb_payment 支付状态 FAIL， 支付完成之间
        }
        return null;
    }
}
